// pages/shopping_cart/shopping_cart.js
Page({

  /**
   * 页面的初始数据
   */
  data: {
    // 用户的购物车数据
    cart_datas: null,
    // 全选 checked 监控
    allState: false,
    // 购物车 item 数据
    datas: null,
    // 购物车 item checked 监控数组
    states: null,
    // 总价
    allPrice: 0
  },
  gotop(e) {
    wx.pageScrollTo({
      scrollTop: 0
    })
  },
  noneFun() {

  },

  // 跳转详情
  openDetails(e) {
    let data = e.currentTarget.dataset.item
    // 打开详情页
    wx.navigateTo({
      url: '../goodsDetails/goodsDetails?data=' + JSON.stringify(data),
    })
  },
  // 打开购买页
  paymentFun() {
    let datas = []
    this.data.datas.forEach((item, index) => {
      if (this.data.states[index]) {
        item.userData = this.data.cart_datas[index]
        datas.push(item)
      }
    })
    // 打开购买页
    wx.navigateTo({
      url: '../payment/payment?datas=' + JSON.stringify(datas),
    })
  },

  // item 多选框点击事件
  change_checked(e) {
    let idnex = e.currentTarget.dataset.index
    let states = this.data.states
    states[idnex] = !states[idnex]
    this.setData({
      states
    })
    // 如果每个都是 checked 都为 true,全选为 true
    let allState = this.data.states.every((item) => {
      return item
    })
    if (allState) {
      this.setData({
        allState: true
      })
    } else {
      if (this.data.allState) {
        this.setData({
          allState: false
        })
      }
    }
    this.count_all_price()
  },

  // 购买件数 - 按钮
  addbtnFun(e) {
    let index = e.currentTarget.dataset.index
    let datas = this.data.datas
    let cart_datas = this.data.cart_datas
    // 购买件数改变
    cart_datas[index].number -= 1
    // 剩余总数改变
    datas[index].left_num += 1
    this.setData({
      cart_datas,
      datas
    })
    this.count_all_price()
  },
  // 购买件数 + 按钮
  minusbtnFun(e) {
    let index = e.currentTarget.dataset.index
    let datas = this.data.datas
    let cart_datas = this.data.cart_datas
    // 购买件数改变
    cart_datas[index].number += 1
    // 剩余总数改变
    datas[index].left_num -= 1
    this.setData({
      cart_datas,
      datas
    })
    this.count_all_price()
  },

  // 全选按钮按下事件
  change_allChecked() {
    let states = this.data.states
    if (this.data.allState) {
      states.forEach((item, index) => {
        states[index] = false
      })
    } else {
      states.forEach((item, index) => {
        states[index] = true
      })
    }
    this.setData({
      allState: !this.data.allState,
      states
    })
    this.count_all_price()
  },

  // 获取购物车数据
  get_shopping_cart() {
    // 获取与用户绑定的购物车数据包 [{ID:'goodsID',type:'typeName',number:'cartNumber'}]
    let cart_datas = [{
      ID: 1,
      type: 'one',
      number: 2
    }]
    let data = [{
      goodsID: 1,
      img: "https://c-ssl.duitang.com/uploads/item/202005/13/20200513204238_igdfd.webp",
      title: "D.va",
      package: {
        one: 999,
        two: 234.00,
        three: 980
      },
      left_num: 3
    }]
    let statesArr = []
    data.forEach((item, index) => {
      statesArr.push(false)
    })
    this.setData({
      cart_datas,
      datas: data,
      states: statesArr
    })
    this.count_all_price()
  },

  // 计算总价
  count_all_price() {
    let allPrice = 0
    this.data.states.forEach((item, index) => {
      if (item) {
        allPrice += this.data.datas[index].package[this.data.cart_datas[index].type] * this.data.cart_datas[index].number
      }
    })
    this.setData({
      allPrice
    })
  },

  // 删除购物车 item 事件
  del_item(e) {
    wx.showModal({
      content: '将商品移除购物车？',
      showCancel: true,
      success: (res) => {
        if (res.confirm) {
          let index = e.currentTarget.dataset.index
          let datas = this.data.datas
          let states = []
          let newArr = []
          datas.forEach((item, idx) => {
            if (index != idx) {
              newArr.push(item)
              states.push(this.data.states[idx])
            }
          })
          datas = newArr
          this.setData({
            datas,
            states
          })
          // 计算总价
          this.count_all_price()
          wx.showToast({
            icon: 'none',
            title: '删除成功',
          })
        }
      },
    })
  },

  catchFun() {},

  /**
   * 生命周期函数--监听页面加载
   */
  onLoad: function (options) {
    this.get_shopping_cart()
  },

  /**
   * 生命周期函数--监听页面初次渲染完成
   */
  onReady: function () {

  },

  /**
   * 生命周期函数--监听页面显示
   */
  onShow: function () {

  },

  /**
   * 生命周期函数--监听页面隐藏
   */
  onHide: function () {

  },

  /**
   * 生命周期函数--监听页面卸载
   */
  onUnload: function () {

  },

  /**
   * 页面相关事件处理函数--监听用户下拉动作
   */
  onPullDownRefresh: function () {

  },

  /**
   * 页面上拉触底事件的处理函数
   */
  onReachBottom: function () {

  },

  /**
   * 用户点击右上角分享
   */
  onShareAppMessage: function () {

  }
})